package com.jichangxiu.generator.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jichangxiu.common.entity.bo.Record;
import com.jichangxiu.generator.entity.dto.GenRowDto;
import com.jichangxiu.generator.entity.dto.edit.EditGenRow;
import com.jichangxiu.generator.entity.dto.query.QueryGenRow;
import com.jichangxiu.generator.entity.dto.query.QueryTable;
import com.jichangxiu.generator.entity.po.GenRow;
import com.jichangxiu.generator.entity.vo.GenRowVo;
import com.jichangxiu.framework.service.BaseService;
import com.jichangxiu.generator.entity.vo.TableVo;

import javax.validation.constraints.NotBlank;
import java.util.List;

/**
 * GenRowService:
 *
 * @author JiChangXiu
 * @create 2024-06-30 13:31:04
 */
public interface GenRowService extends BaseService<GenRow, GenRowVo> {

    /**
     * 导入生成行
     *
     * @param genRowDto 导入行视图对象
     * @return 是否成功
     */
    public Boolean add(GenRowDto genRowDto);

    /**
     * 单（多）选删除生成行
     *
     * @param idList 生成行主键列表
     * @return 是否成功
     */
    public Boolean del(List<String> idList);

    /**
     * 修改生成行
     *
     * @param editGenRow 修改生成行视图对象
     * @return 是否成功
     */
    public Boolean edit(EditGenRow editGenRow);

    /**
     * 根据主键查询生成行
     *
     * @param id       生成行主键
     * @param isExtend 是否扩展
     * @return 生成行详情
     */
    public GenRowVo info(@NotBlank(message = "主键不能为空") String id, Boolean isExtend);

    /**
     * （可分页）查询生成行列表
     *
     * @param queryGenRow 查询视图对象
     * @return （分页）生成行列表
     */
    public Page<GenRowVo> lists(QueryGenRow queryGenRow);

    /**
     * （可分页）查询生表信息列表
     *
     * @param queryTable 表格查询条件
     * @return （分页）表信息列表
     */
    public Page<TableVo> tableVoList(QueryTable queryTable);

    /**
     * 代码预览
     *
     * @param rowIdList 主键列表
     * @return 代码预览
     */
    public Record preview(List<String> rowIdList);

    /**
     * 下载
     *
     * @param rowIdList 主键列表
     * @return 下载文件
     */
    public byte[] download(List<String> rowIdList);

}